package online.hxstar.cloud.gateway.filter;

import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.http.HttpMethod;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;

/**
 * 全局过滤器 所有请求都会执行 可拦截get、post等请求做逻辑处理
 *
 * @author xinghu
 */
@Component
@Slf4j
public class RequestGlobalFilter implements GlobalFilter, Ordered {

	@Override
	public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {

		ServerHttpRequest serverHttpRequest = exchange.getRequest();
		log.info("RequestURI    : {}", serverHttpRequest.getURI().toString());
		HttpMethod method = serverHttpRequest.getMethod();
		log.info("RequestMethod : {}", method);
		return chain.filter(exchange);
	}

	@Override
	public int getOrder() {
		return 1;
	}
}
